package com.skytech.tax.customsdatawarehouse.singlewindow.taxhandle.resource;

import com.skytech.tax.customsdatawarehouse.singlewindow.taxhandle.domain.service.TaxBillService;
import com.sun.org.apache.bcel.internal.generic.SWAP;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * @author Lianhong
 * @since 2021/11/30
 * 税费单资源服务
 */
@RestController
@RequestMapping("/single-window/tax-bill")
public class TaxBillController {

    @Resource
    private TaxBillService taxBillService;

    /**
     * 保存税费单信息
     *
     * @param taxBills 税费单信息
     */
    @PostMapping
    public void saveTaxBills(@RequestBody String taxBills) {
        taxBillService.saveTaxBills(taxBills);
    }

    /**
     * 查询税费单文件名
     *
     * @param swTaxId 税费单ID
     * @return 阿里云存储文件名
     */
    @GetMapping("{swTaxId}/file")
    public String taxBillFile(@PathVariable String swTaxId) {
        return taxBillService.taxBillFile(swTaxId);
    }

    /**
     * 保存税费单文件名
     *
     * @param swTaxId    税费单ID
     * @param storedFile 存储文件名称
     */
    @PostMapping("{swTaxId}/file")
    public void saveTaxBillFile(@PathVariable String swTaxId, @RequestBody String storedFile) {
        taxBillService.saveTaxBillFile(swTaxId, storedFile);
    }

    /**
     * 税费单文件是否已存储
     *
     * @param swTaxId 税费单ID
     */
    @GetMapping("{swTaxId}/file/stored")
    public boolean taxBillFileStored(@PathVariable String swTaxId) {
        return taxBillService.taxBillFileStored(swTaxId);
    }


    /**
     * 查询税费单-核对单文件名
     *
     * @param taxHeadSeqNo 税费单编号
     * @return 阿里云存储文件名
     */
    @GetMapping("check-list/{taxHeadSeqNo}/file")
    public String checkListFile(@PathVariable String taxHeadSeqNo) {
        return taxBillService.checkListFile(taxHeadSeqNo);
    }

    /**
     * 保存税费单-核对单文件名
     *
     * @param taxHeadSeqNo 税费单编号
     * @param storedFile   存储文件名称
     */
    @PostMapping("check-list/{taxHeadSeqNo}/file")
    public void saveCheckListFile(@PathVariable String taxHeadSeqNo, @RequestBody String storedFile) {
        taxBillService.saveCheckListFile(taxHeadSeqNo, storedFile);
    }

    /**
     * 税费单-核对单文件是否已存储
     *
     * @param taxHeadSeqNo 税费单编号
     */
    @GetMapping("check-list/{taxHeadSeqNo}/file/stored")
    public boolean checkListFileStored(@PathVariable String taxHeadSeqNo) {
        return taxBillService.checkListFileStored(taxHeadSeqNo);
    }

    /**
     * 保存税费单税种信息
     *
     * @param swTaxId 税单ID
     * @param taxCatg 税种信息
     */
    @PostMapping("{swTaxId}/tax-catg")
    public void saveTaxCatg(@PathVariable String swTaxId, @RequestBody String taxCatg) {
        taxBillService.saveTaxCatg(swTaxId, taxCatg);
    }

    /**
     * 保存税费单税种信息
     *
     * @param swTaxId 税单ID
     * @param taxSub  税目信息
     */
    @PostMapping("{swTaxId}/tax-catg/{taxCatgId}")
    public void saveTaxSub(@PathVariable String swTaxId, @PathVariable String taxCatgId, @RequestBody String taxSub) {
        taxBillService.saveTaxSub(swTaxId, taxCatgId, taxSub);
    }

    /**
     * 保存税费单支付记录
     *
     * @param paymentRecord 支付记录
     */
    @PostMapping("payment-record/{swTaxId}")
    public void savePaymentRecord(@PathVariable String swTaxId, @RequestBody String paymentRecord) {
        taxBillService.savePaymentRecord(swTaxId, paymentRecord);
    }

    /**
     * 保存税费单支付记录明细
     *
     * @param paymentDetails 支付记录明细
     */
    @PostMapping("payment-details/{taxPayId}")
    public void savePaymentDetails(@PathVariable String taxPayId, @RequestBody String paymentDetails) {
        taxBillService.savePaymentDetails(taxPayId, paymentDetails);
    }
}
